'''
这是一个  测试版 中文版
urllib 
正则
'''
import urllib.request as r
import re
import os
import os.path
print('''
████████████████████████████████
████欢迎各位 有兴趣的话 一起学习!!! 小白模块 1.0版本████
████████████████████████████████
''')
class 网页:
	'''
	取网页源码(网址)
	取网页标题(网页源码)
	'''
	def 取源码(self,url,header=None):
		'''
		取网页源码(网址,*代理头文件=(键,值)):
		返回二进制 源码 需要 decode()
		'''
		x = r.Request(url)
		if header != None:
			print('添加头文件 \n {}\n '.format(header))
			x.add_header(header[0],header[1])
		x1 = r.urlopen(x)
		htm = x1.read()
		return htm 
		# 返回值 类型是 二进制
	def 取标题(self,htm):
		'''
		取源码中的 标题
		'''
		pat = "<title>.*?</title>"
		rea = re.search(pat,htm)
		return rea.group()[+7:-8]

class 文本处理:
	def __init__(self):

		pass
	def 取文本位置(self,pat,str1,start=0,end = 0):
		if end ==0:
			end = len(str1)
		position = str1.find(pat,start,end)
		if position == -1:
			return '没有找到!!!'
		return position
	def 取文本长度(self,str1):
		return len(str1)
	def 文本分割(self,str1,fg,feng = -1):
		'''
		文本分割(欲分割文本,分割文本,分割份数)
		返回 文本数组
		'''
		return str1.split(fg,feng)
	def 文本替换(self,str1,beused,comp):
		'''
		文本替换(主文本,被替换,换成)
		返回 文本
		'''
		temp_num1 = str1.find(beused)
		if temp_num1 == -1:
			return None
		return str1[0:temp_num1]+comp+str1[temp_num1+len(beused):-1]
	def 文本替换全(self,str1,beused,comp):
		'''
		文本替换(主文本,被替换,换成)
		返回 文本
		'''
		temp_text1 = str1.replace(beused,comp)
		return temp_text1

class 正则:
	'''
	a = 中文模块.正则()
	a.正则_xxxx
	正则_xxxx(正则式,被匹配文本):
	只有 [匹配开头 匹配一次 ]有 取文本
	'''
	def __init__(self):
		pass
	def 匹配开头(self,正则式,被文本):
		rem = re.match(正则式,被文本)
		if rem == None:
			return '没有匹配到相应的内容!'
		return rem
	def 匹配一次(self,正则式,被文本):
		res = re.search(正则式,被文本)
		if res == None:
			return '没有匹配到相应的内容!'
		return res
	def 匹配全部(self,正则式,被文本):
		ref = re.findall(正则式,被文本)
		if ref == None:
			return '没有匹配到相应的内容!'
		print('findall() 返回的是 (文本数组)')
		return ref
	def 取文本(self,obj):
		text = obj.group()
		return te

class a:
	pass

#file = os.getcwd()
class 文件读写:
	'''
	参数 文件 地址
	调用 内置 os模块
	'''
	
	def __init__(self,route):
		'''
		路径 用双斜杠分开 例:C:\\abc\\
		'''
		
		if not os.path.isabs(route) :
			self.absroute = os.getcwd()+'\\'+route
		else:
			self.absroute = route
		#先判断是否是绝对路径 转换路径  self.absroute
		self.route = os.path.dirname(self.absroute)
		
	def 读文件(self):
		'''
		默认 读文件 指针在文件开头
		'''
		with open(self.absroute,'r') as f:
			text = f.read()
		return text
	def 写文件(self,txt = '',xierfs = 0):
		'''
		写入方式 没有文件会创建文件
		0:从开头 .覆盖之前文档
		-1:从结尾 .
		'''
		if not os.path.isdir(self.route):
			os.makedirs(self.route)
		if xierfs == 0:
			xier = 'w+'
		elif xierfs ==-1:
			xier = 'a'
		with open(self.absroute,xier) as f:
			text = f.write(txt)
		return text
	def 文件改名(self,newname):
		'''
		请输入绝对路径: 而且 必须文件不存在 否则 报错
		'''
		os.rename(self.absroute,self.route+'\\'+newname)
		return 0
	def 创建文件夹(self):
		'''
		文件地址必须以 \\ 结尾
		'''
		if not os.path.isdir(self.route):
			os.makedirs(self.route)
			return 'ok'
		return 0
	def 是否存在(self):
		'''
		返回 True 和 False
		'''
		return os.path.exists(self.absroute)
	def 删除(self):
		'''
		调用 cmd RD 命令 删除 文件和文件夹
		'''
		os.system('rmdir /s /q '+self.route)